﻿


Public Class ucPreambulo

    Public WithEvents ucAutoridade As New ucAutoridades
    Public WithEvents ucNatureza As New ucNatureza
    Public WithEvents ucDestino As New ucDestino
    Public WithEvents ucPerito As New ucPerito
    'Public WithEvents btnLimpar As Button
    Public numLaudoTemp As Integer
    ' Public registro As New registroVO
    Public registroBO As New registroBO
    Public nomeDiretorio As String
    Public achou_laudo As Boolean = Nothing
    Public ehNovo As Boolean = True
    Public _carregaDados As Boolean = True
    Public _ehExibirBotaoDefinitivo As Boolean = False


    '---------------------------------------------------------
    ' VARIÁVEIS QUE ACUMULAM OS DADOS ENVIADOS DA FRMPRINCIPAL
    '-------------------------------------------------------
    Private _num_laudo_repassado As Integer = 0
    Private _ano_laudo As Integer = 0
    Private _id_natureza As Integer
    Private _id_tipo_pericia As Integer

    Public Property ID_TIPO_PERICIA As Integer
        Get
            Return _id_tipo_pericia
        End Get
        Set(value As Integer)
            _id_tipo_pericia = value
        End Set
    End Property


    Public Property NUM_LAUDO_REPASSADO
        Get
            Return _num_laudo_repassado
        End Get
        Set(value)
            _num_laudo_repassado = value
        End Set
    End Property

    Public Property ANO As Integer
        Get
            Return _ano_laudo
        End Get
        Set(value As Integer)
            _ano_laudo = value
        End Set
    End Property


    Public Property ID_NATUREZA As Integer
        Get
            Return _id_natureza
        End Get
        Set(value As Integer)
            _id_natureza = value
        End Set
    End Property

    Public Property GETIDREGISTRO As Integer
        Get
            Return CType(lblIdRegistro.Text, Integer)
        End Get
        Set(value As Integer)
            lblIdRegistro.Text = value
        End Set
    End Property

    Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        txtDataRegistro.Enabled = False
        txtDataExame.Enabled = False
        'txtDataAcionamento.Enabled = False
        txtHora.ReadOnly = True
        cmbAutor.SelectedIndex = 0
        txtLaudo.Focus()
        ucPerito.ehSelecionarTodos = False

        '---------------------------------------------------------------
        ' POPULANDO OS USERCONTROLS
        '---------------------------------------------------------------

        pnlAutoridade.Controls.Add(ucAutoridade)
        pnlNatureza.Controls.Add(ucNatureza)
        pnlDestino.Controls.Add(ucDestino)
        pnlPerito.Controls.Add(ucPerito)


    End Sub

    Public Property CARREGADADOS As Boolean
        Get
            Return _carregaDados
        End Get
        Set(value As Boolean)
            _carregaDados = value
        End Set
    End Property

    Private Sub ucPreambulo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim form As New formPadrao
        populaDados()
        'preencheCabecalho()
        btnBuscarDefinitivo.Visible = _ehExibirBotaoDefinitivo
    End Sub

    Public Sub populaDados()

        Dim reg As New registroBO

        registroGlobal.registroPincipal = New registroVO

        If Not DesignMode Then

            If CARREGADADOS Then
                txtLaudo.Text = reg.getUltimoRegistro()
            End If

            txtLaudo.Focus()

            If txtLaudo.Text.Equals(String.Empty) Then
                numLaudoTemp = 0
            Else
                numLaudoTemp = CType(txtLaudo.Text, Integer)
            End If
            txtHora.Text = Now.TimeOfDay.ToString
            txtLocal.Text = "STRC - " & Login.Usuario.USUARIOLOGADO.SECAO.DESC_SECAO
            cmbAutor.SelectedIndex = 0

            If ehNovo Then
                cmbAno.SelectedItem = Now.Date.Year.ToString
            Else
                cmbAno.SelectedItem = ANO
            End If

          

            ''-----------------------
            '' RETIRAR
            ''----------------------

            'ucAutoridade.cmbAutoridades.SelectedIndex = 1
            'ucDestino.cmbDestino.SelectedIndex = 1
            'txtVitima.Text = "Maria da Penha Fonseca"
            'txtNaturezaDelito.Text = " Art. 155 do CPB"


            Try

            Catch ex As Exception
                generica.gravaErro(ex)
            End Try
        End If


    End Sub

    Public Sub buscaDadosLaudo(ByVal uc As ucPreambulo, ByVal formPai As Form)

        btnVerWord.Visible = False
        btnVerWord.Visible = False
        Dim total As Integer = 0
        Dim configuracaoBO As New configuracoesBO
        Dim configuracaoVO As New configuracoesVO

        Try
            If Not txtLaudo.Text.Equals(String.Empty) Then
                ' registroGlobal.registroPincipal = registroBO.getRegistroSimplificado(CType(txtLaudo.Text.ToString, Integer), cmbAno.SelectedItem.ToString, getIdNatureza)
                registroGlobal.registroPincipal = registroBO.getRegistroSimplificado(CType(txtLaudo.Text.ToString, Integer), uc.getAno, uc.ID_NATUREZA)
                If registroGlobal.registroPincipal.ID_REGISTRO > 0 Then

                    If registroGlobal.registroPincipal.ANULADO Then

                        MsgBox("O registro " & registroGlobal.registroPincipal.NUM_REGISTRO & "/" & CDate(registroGlobal.registroPincipal.DATA_REGISTRO).Year & " foi anulado na base de dados e não pode ter o laudo gerado automaticamente.")
                    Else



                        With registroGlobal.registroPincipal



                            txtLaudo.Text = .NUM_REGISTRO
                            cmbAno.SelectedItem = .DATA_REGISTRO.Value.Year
                            ucAutoridade.getAutoridadeSelecionada = .AUTORIDADE.ID_AUTORIDADE
                            ucNatureza.getIdTipoPericia = .NATUREZA.TIPO_PERICIA.ID_TIPO
                            ucNatureza.getIdNatureza = .NATUREZA.ID_NATUREZA


                            If Not IsNothing(.DATA_ACIONAMENTO) Then
                                txtDataAcionamento.Text = .DATA_ACIONAMENTO
                                txtDataAcionamento.Enabled = False
                            Else
                                txtDataAcionamento.Text = Now.Date
                            End If

                            If Not IsNothing(.DATA_REGISTRO) Then
                                txtDataRegistro.Text = .DATA_REGISTRO
                            Else
                                txtDataRegistro.Text = Now.Date
                            End If


                            txtDataExame.Text = Now.Date

                            txtHora.Text = Now.TimeOfDay.ToString.Substring(0, 5)

                            If Not IsNothing(.DATA_REQUISICAO_LAUDO) Then

                                txtDataEntrada.Text = .DATA_REQUISICAO_LAUDO
                                If Not IsNothing(.DATA_CONCLUSAO_LAUDO) And .GEROULAUDO Then
                                    txtDataEntrada.Enabled = False
                                Else
                                    txtDataEntrada.Enabled = True
                                End If

                            End If

                            If Not IsNothing(.ENDERECO) Then
                                txtLocal.Text = .ENDERECO
                            Else
                                txtLocal.Text = String.Empty
                            End If

                            If Not IsNothing(.REQUISICAO) Then
                                txtRequisicao.Text = .REQUISICAO
                            Else
                                txtRequisicao.Text = String.Empty
                            End If
                            txtReferencia.Text = String.Empty
                            cmbAutor.SelectedIndex = 0

                            If Not IsNothing(.VITIMA) Then
                                txtVitima.Text = .VITIMA
                            Else
                                txtVitima.Text = String.Empty
                            End If
                            ucDestino.getDestinoSelecionado = .DESTINO.ID_DESTINO

                            If Not IsNothing(.USUARIO.ID_USUARIO) Then
                                If .USUARIO.ID_USUARIO = 359 Then

                                    MsgBox("Este laudo não foi designado a um perito quando registrado no sistema Registro Pericial. Favor selecionar o perito responsável pelo laudo", MsgBoxStyle.Information)
                                    ucPerito.getPeritoSelecionado = frmLogin.usuarioLogado.ID_USUARIO
                                Else
                                    ucPerito.getPeritoSelecionado = .USUARIO.ID_USUARIO
                                End If
                            End If

                            If Not IsNothing(.INVESTIGADO) Then
                                txtAutor.Text = .INVESTIGADO
                            Else
                                txtAutor.Text = String.Empty
                            End If

                            ' txtNaturezaDelito.Text = String.Empty
                            txtReferencia.Text = .REFERENCIA
                            '----------------------------------------------------------------------------------------------'
                            ' SIGNIFICA QUE O REGISTRO FOI INSERIDO PELO REGISTRO PERICIAL E DEVE SER APENAS ATUALIZADO
                            '----------------------------------------------------------------------------------------------

                            'If IsNothing(.DATA_CONCLUSAO_LAUDO) And Not .GEROULAUDO Then
                            '    ehUpdate = True
                            'Else
                            '    ehUpdate = False
                            'End If

                        End With
                    End If

                    txtLaudo.Focus()
                    ehNovo = False

                Else
                    numLaudoTemp = registroBO.getUltimoRegistro
                    If numLaudoTemp = 1 Then
                        MsgBox("Laudo " & txtLaudo.Text & "/" & cmbAno.SelectedItem & " não foi encontrado armazenado na base de dados. Não há nenhum registro gravado na base de dados.")
                    Else
                        If MsgBox("Laudo " & txtLaudo.Text & "/" & cmbAno.SelectedItem & " referente ao exame de " & uc.getDescNaturezaPericia.ToLower & "  não foi encontrado armazenado na base de dados. Verifique se a natureza do exame corresponde ao laudo pesquisado. Deseja ir para a tela de consulta de laudos ?", MsgBoxStyle.YesNo) = vbYes Then
                            Dim form As New frmConsultaLaudo
                            form.txtSearch.Text = txtLaudo.Text
                            generica.fechaForms(formPai)
                            form.MdiParent = formPai
                            form.Show()
                        Else
                            limparCampos()
                            txtLaudo.Text = registroBO.getUltimoRegistro
                            txtLaudo.Focus()
                        End If
                    End If
                    ehNovo = True
                End If

            Else
                MsgBox("Favor informar o número do laudo", MsgBoxStyle.Exclamation)
                limparCampos()
                txtLaudo.Focus()
                ehNovo = False
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    

    Public Property getNumeroLaudo() As String
        Get

            Return txtLaudo.Text


        End Get
        Set(ByVal value As String)

            txtLaudo.Text = value
        End Set
    End Property

    Public Property getNumeroLaudoFormatado() As String
        Get

            Dim laudo As String = txtLaudo.Text

            If laudo.Length < 4 Then
                For i As Integer = 1 To 4 - laudo.Length
                    laudo = "0" & laudo
                Next
            End If

            Return laudo & "/" & cmbAno.SelectedItem


        End Get
        Set(ByVal value As String)

            'txtLaudo.Text = value
        End Set
    End Property

    'Public Property getNaturezaDelito() As String
    '    Get

    '        Return txtNaturezaDelito.Text


    '    End Get
    '    Set(ByVal value As String)

    '        txtNaturezaDelito.Text = value
    '    End Set
    'End Property


    Public Property getIdAutoridade() As Integer

        Get
            Return ucAutoridade.getIdAutoridade

        End Get

        Set(ByVal value As Integer)

            ucAutoridade.getIdAutoridade = value

        End Set

    End Property

    Public Property getIdNatureza() As String
        Get

            Return ucNatureza.getIdNatureza


        End Get
        Set(ByVal value As String)

            ucNatureza.getIdNatureza = value
        End Set
    End Property


    Public Property getAutoridade() As String
        Get

            Return ucAutoridade.getAutoridadeSelecionada


        End Get
        Set(ByVal value As String)

            ucAutoridade.getAutoridadeSelecionada = value
        End Set
    End Property

    Public Property getNomeAutoridade() As String
        Get

            Return ucAutoridade.getNomeAutoridade


        End Get
        Set(ByVal value As String)

            ucAutoridade.getNomeAutoridade = value
        End Set
    End Property

    Public Property getNomeAutoridadePrefixo() As String
        Get

            Return ucAutoridade.getNomeAutoridadePrefixo


        End Get
        Set(ByVal value As String)

            ucAutoridade.getNomeAutoridadePrefixo = value
        End Set
    End Property

    Public Property getIdTipoPericia() As String
        Get

            Return ucNatureza.getIdTipoPericia


        End Get
        Set(ByVal value As String)

            ucNatureza.getIdTipoPericia = value
        End Set
    End Property


    Public Property selecionaIdTipoPericia() As Integer
        Get

            Return ucNatureza.cmbTipoPericia.SelectedValue


        End Get
        Set(ByVal value As Integer)

            ucNatureza.cmbTipoPericia.SelectedValue = value
        End Set
    End Property


    Public Property selecionaIdNatureza() As Integer
        Get

            Return ucNatureza.cmbNatureza.SelectedValue


        End Get
        Set(ByVal value As Integer)

            ucNatureza.cmbNatureza.SelectedValue = value
        End Set
    End Property


    Public Property getDataPericia() As String
        Get

            Return txtDataExame.Text


        End Get
        Set(ByVal value As String)

            txtDataExame.Text = value
        End Set
    End Property

    Public Property getHora() As String
        Get

            Return txtHora.Text


        End Get
        Set(ByVal value As String)

            txtHora.Text = value
        End Set
    End Property

    Public Property getDataRequisicao() As String
        Get

            Return txtDataEntrada.Text


        End Get
        Set(ByVal value As String)

            txtDataEntrada.Text = value
        End Set
    End Property


    Public Property getLocal() As String
        Get

            Return txtLocal.Text


        End Get
        Set(ByVal value As String)

            txtLocal.Text = value
        End Set
    End Property


    Public Property getRequisicao() As String
        Get

            Return txtRequisicao.Text


        End Get
        Set(ByVal value As String)

            txtRequisicao.Text = value
        End Set
    End Property

    Public Property getReferencia() As String
        Get

            Return txtReferencia.Text


        End Get
        Set(ByVal value As String)

            txtReferencia.Text = value
        End Set
    End Property

    Public Property getDescTipoAutor() As String
        Get

            Return cmbAutor.SelectedItem


        End Get
        Set(ByVal value As String)

            cmbAutor.SelectedItem = value
        End Set
    End Property


    Public Property getIndiciado() As String
        Get

            Return txtAutor.Text


        End Get
        Set(ByVal value As String)

            txtAutor.Text = value
        End Set
    End Property


    Public Property getVitima() As String
        Get

            Return txtVitima.Text


        End Get
        Set(ByVal value As String)

            txtVitima.Text = value
        End Set
    End Property

    Public Property getIdDestino() As Integer
        Get

            Return ucDestino.getDestinoSelecionado


        End Get
        Set(ByVal value As Integer)

            ucDestino.getDestinoSelecionado = value
        End Set
    End Property

    Public Property getDestino() As String
        Get

            Return ucDestino.getDestinoSelecionado


        End Get
        Set(ByVal value As String)

            ucDestino.getDestinoSelecionado = value
        End Set
    End Property

    Public Property getAutor() As String
        Get

            Return txtAutor.Text

        End Get
        Set(ByVal value As String)

            txtAutor.Text = value
        End Set
    End Property


    Public Property getNomeDestinoSelecionado() As String

        Get
            Return ucDestino.getNomeDestinoSelecionado

        End Get

        Set(ByVal value As String)

            ucDestino.getNomeDestinoSelecionado = value

        End Set

    End Property


    Public Property getDescNaturezaPericia() As String

        Get
            Return ucNatureza.getDescNaturezaPericia

        End Get

        Set(ByVal value As String)

            ucNatureza.getDescNaturezaPericia = value

        End Set

    End Property


    Public Property getDataRegistro() As DateTime

        Get

            Return Now.Date
        End Get

        Set(ByVal value As DateTime)

            txtDataRegistro.Text = value

        End Set

    End Property


    Public Property getDataAcionamento() As DateTime

        Get

            Return txtDataAcionamento.Text

        End Get

        Set(ByVal value As DateTime)

            txtDataAcionamento.Text = value

        End Set

    End Property


    Public Property getDataExame() As DateTime

        Get

            Return txtDataExame.Text

        End Get

        Set(ByVal value As DateTime)

            txtDataExame.Text = value

        End Set

    End Property

    Public Property getDataEntrada() As DateTime

        Get

            Return txtDataEntrada.Text

        End Get

        Set(ByVal value As DateTime)

            txtDataEntrada.Text = value

        End Set

    End Property


    Public Property getDataRegistroFormatada() As String

        Get
            Return generica.montaData(txtDataRegistro.Text, txtHora.Text)

        End Get

        Set(ByVal value As String)


        End Set

    End Property


    Public Property getCidadeRegional() As String

        Get
            Dim cidade As String = Nothing
            Dim regionalbo As New regionalBO

            Try
                cidade = regionalbo.getCidadeRegional
            Catch ex As Exception
                Throw ex
            End Try
            Return cidade
        End Get
        Set(ByVal value As String)
        End Set
    End Property


    Public Property getAno() As String

        Get
            Return cmbAno.SelectedItem

        End Get

        Set(ByVal value As String)

            cmbAno.SelectedItem = value

        End Set

    End Property


    Public Property getDataFormatadaAssinatura() As String

        Get
            Return generica.montaData(txtDataRegistro.Text)

        End Get

        Set(ByVal value As String)


        End Set

    End Property


    Public Property getNomeMunicipioSelecionado() As String

        Get
            Return ucDestino.getNomeMunicipioSelecionado

        End Get

        Set(ByVal value As String)

            ucDestino.getNomeMunicipioSelecionado = value

        End Set

    End Property


    Public Property getIdMunicipioSelecionado() As Integer

        Get
            Return ucDestino.getIdMunicipioSelecionado

        End Get

        Set(ByVal value As Integer)

            ucDestino.getIdMunicipioSelecionado = value

        End Set

    End Property


    'Public Property getMunicipioDestino() As String

    '    Get
    '        Return ucDestino.getMunicipioDestino

    '    End Get

    '    Set(ByVal value As String)

    '    End Set

    'End Property

    Public Property getNomePeritoSelecionado() As String

        Get
            Return ucPerito.getNomePeritoSelecionado

        End Get

        Set(ByVal value As String)


        End Set

    End Property


    Public Property getIdPeritoSelecionado() As Integer

        Get
            Return ucPerito.getPeritoSelecionado

        End Get

        Set(ByVal value As Integer)

            ucPerito.getPeritoSelecionado = value
        End Set

    End Property

    Public Property getMaspPeritoSelecionado() As String

        Get
            Return ucPerito.getMaspPeritoSelecionado

        End Get

        Set(ByVal value As String)


        End Set

    End Property



    Public Sub limparCampos()

        Dim localTemp As String

        'registroGlobal.registroPincipal = New registroVO
        ''registroGlobal.countLock = 0
        ''registroGlobal.IDregistroLock = 0


        Try
            localTemp = txtLocal.Text
            ' txtNaturezaDelito.Text = String.Empty
            'txtLaudo.Text = ""
            ucAutoridade.getAutoridadeSelecionada = -1
            txtDataRegistro.Text = Now
            txtDataExame.Text = Now
            txtHora.Text = Now.TimeOfDay.ToString.Substring(0, 5)
            txtDataEntrada.Enabled = True
            ucNatureza.getIdNatureza = -1
            ucNatureza.getIdTipoPericia = -1
            ucDestino.getDestinoSelecionado = -1
            ucDestino.cmbMunicipio.SelectedValue = -1
            ucDestino.cmbMunicipio.Enabled = False
            txtDataAcionamento.Enabled = True
            btnVerWord.Visible = False
            txtDataAcionamento.Value = Now
            txtDataRegistro.Value = Now
            txtDataExame.Value = Now
            txtDataEntrada.Value = Now

            For Each controle As Control In Me.Controls

                If TypeOf (controle) Is TextBox Then

                    DirectCast(controle, TextBox).Text = String.Empty

                ElseIf TypeOf (controle) Is DateTimePicker Then

                    DirectCast(controle, DateTimePicker).Text = Now.Date

                End If
            Next

            txtLaudo.Focus()
            txtLocal.Text = localTemp
            txtLaudo.Text = registroBO.getUltimoRegistro

        Catch ex As Exception

            generica.gravaErro(ex)

        End Try
    End Sub


    Private Sub txtLaudo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtLaudo.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Public Sub getUltimoRegistro()

        Dim registroBO As New registroBO

        Dim ultimo As Integer

        Try

            ultimo = registroBO.getUltimoRegistro

            txtLaudo.Text = ultimo

        Catch ex As Exception

            generica.gravaErro(ex)

        End Try

    End Sub


    'Private Sub txtNaturezaDelito_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    '    If txtNaturezaDelito.Text.Equals(String.Empty) Then
    '        txtNaturezaDelito.Text = "Não informada"
    '    End If

    'End Sub


    Private Sub txtLocal_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtLocal.LostFocus



        If txtLocal.Text.Equals(String.Empty) Then

            txtLocal.Text = "STRC - " & Login.Usuario.USUARIOLOGADO.SECAO.DESC_SECAO
        End If

    End Sub


    Private Sub txtReferencia_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtReferencia.LostFocus
        If txtReferencia.Text.Equals(String.Empty) Then

            txtReferencia.Text = "Não informada"
        End If

        txtReferencia.Text = txtReferencia.Text.ToUpper
    End Sub



    Private Sub txtRequisicao_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtRequisicao.LostFocus

        If txtRequisicao.Text.Equals(String.Empty) Then

            txtRequisicao.Text = "Não informada"
        End If

        txtRequisicao.Text = txtRequisicao.Text.ToUpper

    End Sub

    Private Sub txtAutor_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAutor.KeyPress

        'Dim KeyAscii As Short = CShort(Asc(e.KeyChar))

        'KeyAscii = CShort(SoLETRAS(KeyAscii))

        'If KeyAscii = 0 Then

        '    e.Handled = True

        'End If

    End Sub

    Private Sub txtAutor_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtAutor.LostFocus

        If txtAutor.Text.Equals(String.Empty) Then

            txtAutor.Text = "Não informado"
        End If
        txtAutor.Text = txtAutor.Text.ToUpper

    End Sub

    ''Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGerarLaudo.Click

    ''    RaiseEvent onClickLimpaCampos(sender, e)

    ''End Sub

    'Public Event onClickLimpaCampos(ByRef sender As System.Object, ByVal e As System.EventArgs)

    'Private Sub btnLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpar.Click
    '    '  limparCampos()
    '    RaiseEvent onClickLimpaCampos(sender, e)
    'End Sub


    Private Sub cmbAutor_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cmbAutor.KeyPress
        e.Handled = True
    End Sub

    Private Sub txtVitima_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtVitima.GotFocus


        'If txtNaturezaDelito.Text.Equals(String.Empty) Then
        '    txtNaturezaDelito.Text = "Não informada"
        'End If

        If txtRequisicao.Text.Equals(String.Empty) Then
            txtRequisicao.Text = "Não informada"
        End If

        If txtReferencia.Text.Equals(String.Empty) Then
            txtReferencia.Text = "Não informada"
        End If


        If txtAutor.Text.Equals(String.Empty) Then
            txtAutor.Text = "Não informado"
        End If

    End Sub


    Private Sub txtVitima_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtVitima.KeyPress
        'Dim KeyAscii As Short = CShort(Asc(e.KeyChar))

        'KeyAscii = CShort(SoLETRAS(KeyAscii))

        'If KeyAscii = 0 Then

        '    e.Handled = True

        'End If


    End Sub


    Function SoLETRAS(ByVal KeyAscii As Integer) As Integer

        'Transformar letras minusculas em Maiúsculas

        KeyAscii = Asc(UCase(Chr(KeyAscii)))

        ' Intercepta um código ASCII recebido e admite somente letras

        If InStr("AÃÁBCÇDEÉÊFGHIÍJKLMNOPQRSTUÚVWXYZôÔ", Chr(KeyAscii)) = 0 Then

            SoLETRAS = 0

        Else

            SoLETRAS = KeyAscii

        End If



        ' teclas adicionais permitidas

        If KeyAscii = 8 Then SoLETRAS = KeyAscii ' Backspace

        If KeyAscii = 13 Then SoLETRAS = KeyAscii ' Enter

        If KeyAscii = 32 Then SoLETRAS = KeyAscii ' Espace

    End Function


    Public Event onClickLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Public Event onClickGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Public Event onClickBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Public Event onClickVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Public Event onClickNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Public Event onClickDadosDefinitivo(ByVal sender As System.Object, ByVal e As System.EventArgs)


    'Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '    RaiseEvent onClickBotao(sender, e)
    'End Sub


    Private Sub btnBuscaLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaLaudo.Click
        'limparCampos()
        registroGlobal.registroPincipal = New registroVO
        RaiseEvent onClickBuscaLaudo(sender, e)
    End Sub

    Private Sub btnLimpaCampos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpaCampos.Click
        ehNovo = True
        registroGlobal.registroPincipal = New registroVO
        limparCampos()
        RaiseEvent onClickLimpaCampos(sender, e)
    End Sub

    Private Sub btnGeraLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGeraLaudo.Click
        '  preencheCampos()
        'btnVerWord.Visible = False
        RaiseEvent onClickGeraLaudo(sender, e)
    End Sub

    Private Sub btnVerWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerWord.Click
        RaiseEvent onClickVisualizaWord(sender, e)
    End Sub

    Private Sub btnNovoLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNovoLaudo.Click
        ehNovo = True
        registroGlobal.registroPincipal = New registroVO
        RaiseEvent onClickNovoLaudo(sender, e)
    End Sub

    Private Sub btnBuscarDefinitivo_Click(sender As Object, e As EventArgs) Handles btnBuscarDefinitivo.Click
        registroGlobal.registroPincipal = New registroVO
        RaiseEvent onClickDadosDefinitivo(sender, e)
    End Sub

    Private Sub preencheCampos()
        'If txtNaturezaDelito.Text.Equals(String.Empty) Then
        '    txtNaturezaDelito.Text = "Não informada"
        'End If
        If txtReferencia.Text.Equals(String.Empty) Then
            txtReferencia.Text = "Não informada"
        End If
        If txtRequisicao.Text.Equals(String.Empty) Then
            txtRequisicao.Text = "Não informada"
        End If
        If txtAutor.Text.Equals(String.Empty) Then
            txtAutor.Text = "Não informado"
        End If
    End Sub

    Private Sub txtVitima_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtVitima.LostFocus
        If txtVitima.Text.Length > 0 Then
            erroCampo.SetError(txtVitima, String.Empty)
        Else
            erroCampo.SetError(txtVitima, "Campo obrigatório")
        End If

        txtVitima.Text = txtVitima.Text.ToUpper
    End Sub

    Private Sub txtVitima_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtVitima.TextChanged

    End Sub

    Private Sub txtDataExame_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDataExame.GotFocus

        'If txtNaturezaDelito.Text.Equals(String.Empty) Then
        '    txtNaturezaDelito.Text = "Não informada"
        'End If

        If txtRequisicao.Text.Equals(String.Empty) Then
            txtRequisicao.Text = "Não informada"
        End If

        If txtReferencia.Text.Equals(String.Empty) Then
            txtReferencia.Text = "Não informada"
        End If


        If txtAutor.Text.Equals(String.Empty) Then
            txtAutor.Text = "Não informado"
        End If

    End Sub

    'Private Sub txtDataAcionamento_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDataAcionamento.ValueChanged

    '    Try

    '        If CType(txtDataAcionamento.Value, Date) > Now.Date Then

    '            erroCampo.SetError(txtDataAcionamento, "Data do acionamento não pode ser maior que a data atual")
    '            'txtDataAcionamento.Value = Now.Date
    '            txtDataAcionamento.Focus()

    '        Else

    '            erroCampo.SetError(txtDataAcionamento, String.Empty)

    '        End If

    '    Catch ex As Exception
    '        generica.gravaErro(ex)
    '    End Try

    'End Sub

    Public Sub cmbAutoridades_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucAutoridade.cmbAutoridadesSelectionChangeCommitted
        If ucAutoridade.getAutoridadeSelecionada > 0 Then
            erroCampo.SetError(pnlAutoridade, String.Empty)
        Else
            erroCampo.SetError(pnlAutoridade, "Campo obrigatório")
        End If
    End Sub

    Public Sub cmbTipoPericia_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucNatureza.cmbTipoPericiaSelectionChangeCommitted
        If ucNatureza.getIdTipoPericia > 0 Then
            erroCampo.SetError(pnlNatureza, String.Empty)
        Else
            erroCampo.SetError(pnlNatureza, "Campo obrigatório")
        End If
    End Sub

    Public Sub cmbDestino_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucDestino.cmbDestinoSelectionChangeCommitted
        If ucDestino.getDestinoSelecionado > 0 Then
            erroCampo.SetError(pnlDestino, String.Empty)
        Else
            erroCampo.SetError(pnlDestino, "Campo obrigatório")
        End If
    End Sub


    Public Sub habilitaCampos(ByVal habilita As Boolean)
        Try

            'txtDataExame.Enabled = True

            '  If registroGlobal.registroPincipal.ID_REGISTRO > 0 Then

            If ehNovo And registroGlobal.registroPincipal.ID_REGISTRO = 0 Then
                txtDataAcionamento.Enabled = True
                txtDataEntrada.Enabled = True
                txtDataExame.Enabled = True
                txtDataRegistro.Enabled = False

            ElseIf registroGlobal.registroPincipal.ID_REGISTRO > 0 Or registroGlobal.registroPincipal.GEROULAUDO Then
                txtDataAcionamento.Enabled = False
                txtDataEntrada.Enabled = False
                txtDataExame.Enabled = False
                txtDataRegistro.Enabled = False
            Else


            End If



            pnlAutoridade.Enabled = habilita
            pnlDestino.Enabled = habilita
            pnlNatureza.Enabled = habilita
            pnlPerito.Enabled = habilita
            ' txtNaturezaDelito.Enabled = habilita

            txtLocal.Enabled = habilita
            txtRequisicao.Enabled = habilita
            txtReferencia.Enabled = habilita
            cmbAutor.Enabled = habilita
            txtAutor.Enabled = habilita
            txtVitima.Enabled = habilita
            ' grpEntrega.Enabled = habilita

        Catch ex As Exception

            generica.gravaErro(ex)

        End Try

    End Sub

    Private Sub cmbAno_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbAno.SelectedIndexChanged
        Try
            Dim ano As Integer = Now.Date.Year
            If CType(cmbAno.SelectedItem, Integer) > ano Then
                erroCampo.SetError(cmbAno, "Ano do laudo não pode ser maior do que o do ano corrente")
                cmbAno.Focus()
            Else
                erroCampo.SetError(cmbAno, String.Empty)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    'Private Sub txtDataAcionamento_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDataAcionamento.ValueChanged
    '    If CType(txtDataAcionamento.Text, DateTime) > CType(txtDataRegistro.Text, DateTime) Then
    '        erroCampo.SetError(txtDataAcionamento, "Data de acionamento não pode ser maior que a data do registro do laudo")
    '    ElseIf CType(txtDataAcionamento.Text, DateTime) > CType(txtDataExame.Text, DateTime) Then
    '        erroCampo.SetError(txtDataAcionamento, "Data de acionamento não pode ser maior que a data da realização do exame")
    '    ElseIf CType(txtDataAcionamento.Text, DateTime) > CType(txtDataEntrada.Text, DateTime) Then
    '        erroCampo.SetError(txtDataAcionamento, "Data de acionamento não pode ser maior que a data da entrada da requisição pericial")
    '    ElseIf CType(txtDataAcionamento.Text, DateTime) > Now.Date Then
    '        erroCampo.SetError(txtDataAcionamento, "Data de acionamento não pode ser maior que a data atual")
    '    Else

    '        erroCampo.SetError(txtDataAcionamento, String.Empty)
    '    End If
    'End Sub

    'Private Sub txtDataEntrada_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDataEntrada.ValueChanged
    '    If CType(txtDataEntrada.Text, DateTime) > CType(txtDataRegistro.Text, DateTime) Then
    '        erroCampo.SetError(txtDataEntrada, "Data de entrada não pode ser maior que a data do registro do laudo")
    '    ElseIf CType(txtDataEntrada.Text, DateTime) > CType(txtDataExame.Text, DateTime) Then
    '        erroCampo.SetError(txtDataEntrada, "Data de entrada não pode ser maior que a data da realização do exame")
    '    ElseIf CType(txtDataEntrada.Text, DateTime) < CType(txtDataAcionamento.Text, DateTime) Then
    '        erroCampo.SetError(txtDataEntrada, "Data de entrada não pode ser menor que a data da entrada da requisição pericial")
    '    ElseIf CType(txtDataEntrada.Text, DateTime) > Now.Date Then
    '        erroCampo.SetError(txtDataEntrada, "Data de entrada não pode ser maior que a data atual")
    '    Else
    '        erroCampo.SetError(txtDataEntrada, String.Empty)
    '    End If
    'End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTelaAnterior.Click
        Try

            If Not IsNothing(preambulo.AUTOR) Then
                cmbAno.SelectedValue = preambulo.ANO
                ucAutoridade.getIdAutoridade = preambulo.IDAUTORIDADE
                'txtNaturezaDelito.Text = preambulo.NATUREZADELITO
                txtDataAcionamento.Text = preambulo.DATAACIONAMENTO
                txtDataEntrada.Text = preambulo.DATAENTRADA
                txtLocal.Text = preambulo.LOCALEXAME
                txtRequisicao.Text = preambulo.REQUISICAO
                txtReferencia.Text = preambulo.REFERENCIA
                cmbAutor.SelectedValue = preambulo.CMBAUTOR
                txtAutor.Text = preambulo.AUTOR
                txtVitima.Text = preambulo.VITIMA
                ucDestino.getDestinoSelecionado = preambulo.IDDESTINOLAUDO
                ucPerito.getPeritoSelecionado = preambulo.IDPERITO

            Else
                MsgBox("Não há dados registrados na memória do sistema")


            End If



        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    'Private Sub txtLaudo_KeyUp(sender As Object, e As KeyEventArgs) Handles txtLaudo.KeyUp
    '    btnGeraLaudo.Enabled = False
    'End Sub
    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub

    Private Sub txtDataExame_ValueChanged(sender As Object, e As EventArgs) Handles txtDataExame.ValueChanged

        If CType(txtDataExame.Value, Date) > (Now) Then

            erroCampo.SetError(txtDataExame, "A data do exame não pode ser maior do que a data atual do sistema")
        Else
            erroCampo.SetError(txtDataExame, String.Empty)
        End If


    End Sub


    Private Sub preencheCabecalho()

        ' txtNaturezaDelito.Text = "Art.157 do CPB"
        txtRequisicao.Text = " 159/2013"
        txtReferencia.Text = "BOPM 15.850/2013"
        txtAutor.Text = "Marcelo Dorival Lacerda"
        txtVitima.Text = "Marlene Augusta da Silva"
        ucAutoridade.cmbAutoridades.SelectedIndex = 5
        ucDestino.cmbDestino.SelectedIndex = 2

    End Sub


    Private Sub txtAutor_TextChanged(sender As Object, e As EventArgs) Handles txtAutor.TextChanged

    End Sub
End Class

